package com.yanmaohu.yulia.bean;

/**
 * @author Bright Lee
 */
public final class ColumnDefinition implements TableElement {

    private final int beginIndex;
    private final int endIndex;
    private final Identifier columnName;
    private final DataType dataType;
    private final SchemaQualifiedName domainName;
    private final ReferenceScopeCheck referenceScopeCheck;
    private final DefaultClause defaultClause;
    private final IdentityColumnSpecification identityColumnSpecification;
    private final GenerationClause generationClause;
    private final ColumnConstraintDefinitionList columnConstraintDefinitionList;
    private final CollateClause collateClause;

    public ColumnDefinition(int beginIndex,
                            int endIndex,
                            Identifier columnName,
                            DataType dataType,
                            SchemaQualifiedName domainName,
                            ReferenceScopeCheck referenceScopeCheck,
                            DefaultClause defaultClause,
                            IdentityColumnSpecification identityColumnSpecification,
                            GenerationClause generationClause,
                            ColumnConstraintDefinitionList columnConstraintDefinitionList,
                            CollateClause collateClause) {
        this.beginIndex = beginIndex;
        this.endIndex = endIndex;
        this.columnName = columnName;
        this.dataType = dataType;
        this.domainName = domainName;
        this.referenceScopeCheck = referenceScopeCheck;
        this.defaultClause = defaultClause;
        this.identityColumnSpecification = identityColumnSpecification;
        this.generationClause = generationClause;
        this.columnConstraintDefinitionList = columnConstraintDefinitionList;
        this.collateClause = collateClause;
    }

    public int getBeginIndex() {
        return beginIndex;
    }

    public int getEndIndex() {
        return endIndex;
    }

    public Identifier getColumnName() {
        return columnName;
    }

    public DataType getDataType() {
        return dataType;
    }

    public SchemaQualifiedName getDomainName() {
        return domainName;
    }

    public ReferenceScopeCheck getReferenceScopeCheck() {
        return referenceScopeCheck;
    }

    public DefaultClause getDefaultClause() {
        return defaultClause;
    }

    public IdentityColumnSpecification getIdentityColumnSpecification() {
        return identityColumnSpecification;
    }

    public GenerationClause getGenerationClause() {
        return generationClause;
    }

    public ColumnConstraintDefinitionList getColumnConstraintDefinitionList() {
        return columnConstraintDefinitionList;
    }

    public CollateClause getCollateClause() {
        return collateClause;
    }

}
